iT邦幫忙

2021 iThome 鐵人賽

DAY 2
2
Software Development

MongoDB披荊斬棘之路系列 第 2

DAY2 安裝與使用 MongoDB

  • 分享至 

  • xImage
  •  

DAY2 安裝與使用 MongoDB

MongoDB 在社群, 非營利環境使用是免費的,而我一律推薦使用 docker 來操作,一來省掉一堆平台相容性以及安裝上遇到的問題,二來大家都會是一樣的起始狀態,三來是弄壞了也不用擔心重裝麻煩之類的。所以本篇以下不會介紹到任何os獨有安裝方式,僅使用 docker 而已,如果對 docker 熟稔的朋友就可以直接跳過本篇了。

安裝

Application 安裝模式會因為各種os有所不同,這邊不會一一介紹,有需要的可以直接參考官網 各個平台安裝 MongoDB 方法。我要用的是以 docker 方式來啟動 MongoDB。(開始前請先安裝 docker)

首先直接從 docker hub 拉取最新的映像檔(image)

docker pull mongo:latest

有指定的版本號或 tag 也可以去 docker hub 查看

➜  / docker pull mongo:latest
latest: Pulling from library/mongo
16ec32c2132b: Already exists
81447d2c233f: Pull complete
Digest: sha256:93ea50c5f15f9814870b3509449d327c5bc4d38f2b17c20acec528472811a723
Status: Downloaded newer image for mongo:latest
docker.io/library/mongo:latest
➜  /

這樣就成功版最新的版本映像檔拉回本機囉!我們還是先確認 image 是否存在

docker image ls

➜  / docker image ls
REPOSITORY               TAG            IMAGE ID       CREATED        SIZE
mongo                    latest         269b735e72cb   3 weeks ago    682MB

看到 tag 欄位,latest 畢竟是 latest,我們還是不知道是哪一個版本,如果想看拉回來的 MongoDB 是什麼版本,可以使用 dk image inspect [IMAGE ID] 來查看細節。

啟動

接著看怎麼啟動 MongoDB 吧!

docker run -d mongo

我們再輸入 docker ps ls 來查看有哪些正在執行的 docker

➜  / docker run -d mongo
11ef37ced7a9797e9ba9bb307232ad340533f6277801203b009b2fbb6d1b3daa

➜  / dk ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS        PORTS       NAMES
11ef37ced7a9   mongo     "docker-entrypoint.s…"   2 seconds ago   Up 1 second   27017/tcp   elegant_lamport
➜  /

關於這個 -d 參數千萬不能漏掉,因為沒加上去的話就會被佔用一個 terminal 視窗,要多開一個會很麻煩(網路梗),-d 是背景執行的意思。

設定 port 與 名稱

如上面 terminal 結果,實務上我們還會多給予一些設定,例如 port 與 名稱,這樣才能協助我們從眾多 docker 執行體中找到 mongoDB。

預設的 MongoDB port 是 27017,我們把 port 號改為 27666,同時名字也改為辨識度高一點的的。

dk run -d -p 27666:27017 --name mongoTest mongo

結果

➜  / dk ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                           NAMES
9d48d1c66439   mongo     "docker-entrypoint.s…"   7 seconds ago   Up 5 seconds   0.0.0.0:27666->27017/tcp, :::27666->27017/tcp   mongoTest

關閉

我們使用 docker ps 指令列出目前正在執行的容器,可以透過docker stop 指令來關閉,帶入的可以是 CONTAINER IDNAMES,我自己是比較喜歡用 ID,因為不用完整輸入名稱,只要前幾碼而已。

例如上面的 CONTAINER ID: 9d48d1c66439, NAMES: mongoTest,你可以用以下方式輸入:

  • docker stop mongoTest
  • docker stop 9d48d1c66439
  • docker stop 9d4 (可以更少,但避免誤停,還是多個幾碼吧)

docker-compose 出場

現在你已經會使用 docker 運作 MongoDB 了,那為什麼還需要 docker-compose?因為科技始終來自於惰性,人是很懶惰打一堆指令的,於是我們把相關設定都直接寫在 yaml 內,我只要記得 docker-compose up & docker-compose down 就好了!(其實我更懶,加上 alias,只需要 dc up & dc down

首先在專案底下建立一個檔案名字是 docker-compose.yml,記得名字要對,內容就照著以下打即可

version: '3'
services:
    mongoTest:
        image: mongo
        container_name: mongoTest
        ports:
            - "27666:27017"
        entrypoint: [ "/usr/bin/mongod","--bind_ip", "localhost"]

接著在路徑資料夾輸入 docker-compose up 就可以看到 MongoDB 啟動囉!

保留容器資料

前面有提到,使用 docker 的好處是每次啟動都像新的一樣,我所需要使用的初始資料都會準備在一個初始用的腳本內,啟動時順手把資料寫進資料庫。

那如果想保留資料的話該怎麼做?
其實也很簡單,在 yml 內新增 volumes 設定。完整如下:

version: '3'
services:
    mongo_test:
        image: mongo
        container_name: mongo_test
        ports:
            - "27666:27017"
        volumes:
            - "~/Desktop/mount-mongo-data:/data/db"

: 前面的路徑就是實體位置,你也可以修改成你想儲存的位置。
所以我是將 MongoDB 的資料儲存在 ~/Desktop/mount-mongo-data 底下喔!


學會如何使用 docker 啟動 MongoDB 後,接下來就是如何連線了!請期待明天吧!


本系列文章會同步發表於我個人的部落格 Pie Note


上一篇
DAY1 揭開序幕與 MongoDB 簡介
下一篇
DAY3 MongoDB 連線與 IDE
系列文
MongoDB披荊斬棘之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言